package com.example.person.entity;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.ContentRowHeight;
import com.alibaba.excel.annotation.write.style.ContentStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.Date;

/**
 * @author sytsnb@gmail.com
 * @date 2023 2023/3/10 16:35
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ExcelIgnoreUnannotated
@ContentRowHeight(25) //内容高度
@HeadRowHeight(20)  //头高度
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER)   //内容样式
@Builder
public class Person {

    /** 主键id */
    private String id;

    /** 姓名 */
    @NotNull(message = "姓名不能为空")
    @ColumnWidth(12)   //宽度
    @ExcelProperty("姓名")
    private String name;

    /** 姓名全拼(全部小写) */
    @ColumnWidth(15)
    @ExcelProperty("姓名拼音")
    private String fullNameSpelling;

    /** 性别 */
    @NotNull(message = "性别不能为空")
    @ColumnWidth(12)
    @ExcelProperty("性别")
    private String gender;

    /** 身份证件类型 1:居民身份证 2:士官证 3:学生证 4:驾驶证 5:护照 6:港澳通行证 */
    @NotNull(message = "身份证类型不能为空")
    @ColumnWidth(14)
    @ExcelProperty("身份证类型")
    private String idCardType;

    /** 身份证号码 */
    @NotNull(message = "身份证号不能为空")
    @ColumnWidth(22)   //宽度
    @ExcelProperty("身份证号")
    private String idNo;

    /** 出生日期 */
    @NotNull(message = "出生日期不能为空")
    @ColumnWidth(12)
    @ExcelProperty(value = "出生日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(value = "yyyy-MM-dd")
    private Date birthDate;

    /** 手机号码 */
    @NotNull(message = "手机号不能为空")
    @ColumnWidth(18)
    @ExcelProperty("手机号")
    private String mobilePhone;

    /** 邮箱地址 */
    @NotNull(message = "电子邮件不能为空")
    @ColumnWidth(22)
    @ExcelProperty("电子邮件")
    private String email;

    /**创建时间**/
    private LocalDateTime createTime;

    /**修改时间**/
    private LocalDateTime updateTime;
}
